﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace CoTuong
{
    [Serializable]
    public class QuanMa : QuanCo
    {
        public QuanMa(Texture2D texture2D, int dong, int cot, int quan, Boolean isSelected)
            : base(texture2D, dong, cot, quan, isSelected)
        {

        }

        public override void Update(GameTime gameTime)
        {
            if (isSelected == true)
            {
                if (quan == 0)
                {
                    #region Di Chuyển phía trên quân Mã Đỏ
                    if (dong >= 2 && cot <= 7)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 2, cot + 1] != 1)
                            this.diChuyen(dong - 2, cot + 1);
                    }

                    if (dong >= 2 && cot >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 2, cot - 1] != 1)
                            this.diChuyen(dong - 2, cot - 1);
                    }
                    #endregion

                    #region Di chuyển phía dưới quân Mã Đỏ
                    if (dong <= 7 && cot <= 7)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 2, cot + 1] != 1)
                            this.diChuyen(dong + 2, cot + 1);
                    }

                    if (dong <= 7 && cot >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 2, cot - 1] != 1)
                            this.diChuyen(dong + 2, cot - 1);
                    }
                    #endregion

                    #region Di chuyển phía trái quân Mã Đỏ
                    if (cot >= 2 && dong >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot - 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 1, cot - 2] != 1)
                            this.diChuyen(dong - 1, cot - 2);
                    }
                    if (cot >= 2 && dong <= 8)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot - 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 1, cot - 2] != 1)
                            this.diChuyen(dong + 1, cot - 2);
                    }
                    #endregion

                    #region Di chuyển phía phải quân Mã Đỏ
                    if (cot <= 6 && dong >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot + 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 1, cot + 2] != 1)
                            this.diChuyen(dong - 1, cot + 2);
                    }
                    if (cot <= 6 && dong <= 8)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot + 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 1, cot + 2] != 1)
                            this.diChuyen(dong + 1, cot + 2);
                    }
                    #endregion
                }

                else
                {
                    #region Di Chuyển phía trên quân Mã Xanh
                    if (dong >= 2 && cot <= 7)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 2, cot + 1] != 2)
                            this.diChuyen(dong - 2, cot + 1);
                    }

                    if (dong >= 2 && cot >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 2, cot - 1] != 2)
                            this.diChuyen(dong - 2, cot - 1);
                    }
                    #endregion

                    #region Di chuyển phía dưới quân Mã Xanh
                    if (dong <= 7 && cot <= 7)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 2, cot + 1] != 2)
                            this.diChuyen(dong + 2, cot + 1);
                    }

                    if (dong <= 7 && cot >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 2, cot - 1] != 2)
                            this.diChuyen(dong + 2, cot - 1);
                    }
                    #endregion

                    #region Di chuyển phía trái quân Mã Xanh
                    if (cot >= 2 && dong >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot - 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 1, cot - 2] != 2)
                            this.diChuyen(dong - 1, cot - 2);
                    }
                    if (cot >= 2 && dong <= 8)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot - 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 1, cot - 2] != 2)
                            this.diChuyen(dong + 1, cot - 2);
                    }
                    #endregion

                    #region Di chuyển phía phải quân Mã Xanh
                    if (cot <= 6 && dong >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot + 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 1, cot + 2] != 2)
                            this.diChuyen(dong - 1, cot + 2);
                    }
                    if (cot <= 6 && dong <= 8)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot + 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 1, cot + 2] != 2)
                            this.diChuyen(dong + 1, cot + 2);
                    }
                    #endregion
                }

                ViTriDiChuyen.X = -framesizeX;
                ViTriDiChuyen.Y = -framesizeY;
            }

            base.Update(gameTime);
        }

        public override void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            if (isSelected == true)
            {
                if (quan == 0)
                {
                    #region Vẽ 2 bước đi phía trên quân Mã Đỏ
                    if (dong >= 2 && cot <= 7)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 2, cot + 1] != 1)
                            this.VeBuocDiQuanCo(dong - 2, cot + 1, spriteBatch);
                    }

                    if (dong >= 2 && cot >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 2, cot - 1] != 1)
                            this.VeBuocDiQuanCo(dong - 2, cot - 1, spriteBatch);
                    }
                    #endregion

                    #region Vẽ 2 bước đi phía dưới quân Mã Đỏ
                    if (dong <= 7 && cot <= 7)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 2, cot + 1] != 1)
                            this.VeBuocDiQuanCo(dong + 2, cot + 1, spriteBatch);
                    }

                    if (dong <= 7 && cot >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 2, cot - 1] != 1)
                            this.VeBuocDiQuanCo(dong + 2, cot - 1, spriteBatch);
                    }
                    #endregion

                    #region Vẽ 2 bước đi phía trái quân Mã Đỏ
                    if (cot >= 2 && dong >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot - 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 1, cot - 2] != 1)
                            this.VeBuocDiQuanCo(dong - 1, cot - 2, spriteBatch);
                    }
                    if(cot >= 2 && dong <= 8)
                    {
                        if(QuanLyQuanCo.ktQuanCo[dong, cot - 1] == 0 &&
                           QuanLyQuanCo.ktQuanCo[dong + 1, cot - 2] != 1)
                            this.VeBuocDiQuanCo(dong + 1, cot - 2, spriteBatch);
                    }
                    #endregion

                    #region Vẽ 2 bước đi phía phải quân Mã Đỏ
                    if (cot <= 6 && dong >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot + 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 1, cot + 2] != 1)
                            this.VeBuocDiQuanCo(dong - 1, cot + 2, spriteBatch);
                    }
                    if(cot <= 6 && dong <= 8)
                    {
                        if(QuanLyQuanCo.ktQuanCo[dong, cot + 1] == 0 &&
                           QuanLyQuanCo.ktQuanCo[dong + 1, cot + 2] != 1)
                            this.VeBuocDiQuanCo(dong + 1, cot + 2, spriteBatch);
                    }
                    #endregion

                }

                else
                {
                    #region Vẽ 2 bước đi phía trên quân Mã Xanh
                    if (dong >= 2 && cot <= 7)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 2, cot + 1] != 2)
                            this.VeBuocDiQuanCo(dong - 2, cot + 1, spriteBatch);
                    }

                    if (dong >= 2 && cot >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 2, cot - 1] != 2)
                            this.VeBuocDiQuanCo(dong - 2, cot - 1, spriteBatch);
                    }
                    #endregion

                    #region Vẽ 2 bước đi phía dưới quân Mã Xanh
                    if (dong <= 7 && cot <= 7)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 2, cot + 1] != 2)
                            this.VeBuocDiQuanCo(dong + 2, cot + 1, spriteBatch);
                    }

                    if (dong <= 7 && cot >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong + 2, cot - 1] != 2)
                            this.VeBuocDiQuanCo(dong + 2, cot - 1, spriteBatch);
                    }
                    #endregion

                    #region Vẽ 2 bước đi phía trái quân Mã Xanh
                    if (cot >= 2 && dong >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot - 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 1, cot - 2] != 2)
                            this.VeBuocDiQuanCo(dong - 1, cot - 2, spriteBatch);
                    }
                    if (cot >= 2 && dong <= 8)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot - 1] == 0 &&
                           QuanLyQuanCo.ktQuanCo[dong + 1, cot - 2] != 2)
                            this.VeBuocDiQuanCo(dong + 1, cot - 2, spriteBatch);
                    }
                    #endregion

                    #region Vẽ 2 bước đi phía phải quân Mã Xanh
                    if (cot <= 6 && dong >= 1)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot + 1] == 0 &&
                            QuanLyQuanCo.ktQuanCo[dong - 1, cot + 2] != 2)
                            this.VeBuocDiQuanCo(dong - 1, cot + 2, spriteBatch);
                    }
                    if (cot <= 6 && dong <= 8)
                    {
                        if (QuanLyQuanCo.ktQuanCo[dong, cot + 1] == 0 &&
                           QuanLyQuanCo.ktQuanCo[dong + 1, cot + 2] != 2)
                            this.VeBuocDiQuanCo(dong + 1, cot + 2, spriteBatch);
                    }
                    #endregion
                }
            }

            base.Draw(gameTime, spriteBatch);
        }

    }
}
